<?php
/**
* エラーチェッククラス
* 
* @copyright		SHIFT,Inc
* @lastupdate		2009-03-25
**/

class Class_ERROR{

	var $clear;

	function Class_ERROR(){
		
		$this->clear = true;
		
	}

	function check( $value, $arrFunc, $default = '' ){

		//必須判定あり
		if( in_array('EXIST', $arrFunc) ){

			if( $default != '' ){
				
				if( trim($value) == '' || $value == $default ){
					$this->clear = false;
					return '必須項目です';
				}

			}else{
				if( trim($value) == '' ){
					$this->clear = false;
					return '必須項目です';
				}
			}

		}

        foreach ( $arrFunc as $key ) {

			switch( $key ){

			case "ZIP":
				return $this->zipcode_check( $value );
				break;

			case "TEL":
				return $this->tel_check( $value );
				break;

			case "EMAIL":
				return $this->mail_check( $value );
				break;

			case "NUM":
				return $this->number_check( $value );
				break;

			case "ALNUM":
				return $this->alnum_check( $value );
				break;

			case "KATAKANA":
				return $this->katakana_check( $value );
				break;

			case "HIRAKANA":
				return $this->hirakana_check( $value );
				break;

			case "YMD":
				return $this->ymd_check( $value );
				break;
			}

        }

	}


	//必須チェック
	function exist_check( $value ){
		if( $value == '' ){
			$this->clear = false;
			return '必須項目です';
		}else{
			return '';
		}
	}
	
	//数値判定
	function number_check( $value ){
		if( is_numeric( $value ) ){
			return;
		}else{
			if( $value == '' ){
				return '';
			}else{
				$this->clear = false;
				return '半角数字で入力して下さい';
			}
		}
	}
	
	//電話番号判定
	function tel_check( $value ){

		if( $value == '' ) return;

		if( preg_match("/^\d{2,5}\-\d{2,5}\-\d{4}$/", $value) ) {
			return;
	    } else {
			if( $value == '--' ){
				return '';
			}else{
				$this->clear = false;
	        	return '正しく入力してください';
			}
	    }

	}

	//郵便番号判定
	function zipcode_check( $value ){

		if( preg_match("/^\d{3}\-\d{4}$/", $value) ) {
			return '';
	    } else {
			if( $value == '-' ){
				return '';
			}else{
				$this->clear = false;
	        	return '正しく入力してください';
			}
	    }

	}

	//年月日判定
	function ymd_check( $value ){
		
		if( preg_match("/^\d{4}\/\d{1,2}\/\d{1,2}/", $value ) ){
			
			$tmp = explode('/', $value);
			if( checkdate( $tmp[1], $tmp[2], $tmp[0] ) ){
				return;
			}else{
				$this->clear = false;
				return '正しく入力してください';
			}
			
		}else{
			if( $value == '' ){
				return;
			}else{
				$this->clear = false;
				return '正しく入力してください';
			}
		}
		
	}
	
	//E-MAIL判定
	function mail_check( $value ){

		if( preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $value) ) {
			return;
		}else{
			$this->clear = false;
	        return '正しく入力してください';
		}

	}

	//ひらがな判定
	function hirakana_check( $value ){

		mb_regex_encoding("UTF-8");
		if( preg_match("/^[ぁ-ん]+$/u", $value) ){
			return;
		}else{
			$this->clear = false;
			return 'ひらがなで入力してください';
		}

	}

	//カタカナ判定
	function katakana_check( $value ){

		mb_regex_encoding("UTF-8");
		if( preg_match("/^[ァ-ヶー\s　]+$/u", $value) ){
			return;
		}else{
			$this->clear = false;
			return 'カタカナで入力してください';
		}

	}

	//半角英数チェック
	function alnum_check( $value ){
		
		if( preg_match("/^[!-~]+$/", $value)){
			return;
		}else{
			$this->clear = false;
			return "半角英数字で入力してください";
		}
		
	}

}

?>